#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
//gcc -lpthread

typedef struct temp
{
    char ch[32];
    int true;
}temp,*ftemp;


void* handler_thread(void* arg){
    ftemp fone=(ftemp)arg;
    char back[]="quit";
    while(1){
        
        if((*fone).true == 1){//检测是否输入
            if(strcmp((*fone).ch,back) == 0){
                (*fone).true=2;//输出结束信号
                break;
            }

            printf("子线程:%s\n",(*fone).ch);
            (*fone).true=0;//归零(输出执行完的信号)
        }
    }
    pthread_exit(NULL);
}


int main(void){
    temp one={{0},0};
    pthread_t tid=-1;
    //声明一个变量,将变量的地址传入子线程,就能通过该变量传递信号;
    if(pthread_create(&tid,NULL,handler_thread,(void*)(&one)) != 0){
        perror("pthread_create err");
        return -1;
    }
    while(1){
        
        scanf("%s",one.ch);
        one.true =1;//输入后便发送信号
        
        while(one.true == 1);//等待true的值改变(等待线程发送信号)
        if(one.true == 2){//检测结束信号
            break;
        }
        
    }

    if(pthread_join(tid,NULL)){
        printf("error\n");
    }

    return 0;
}